{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Handling instability in non-smooth functions"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2023-10-07T00:46:40.608248Z",
     "start_time": "2023-10-07T00:46:38.357851Z"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Note: you may need to restart the kernel to use updated packages.\n"
     ]
    }
   ],
   "source": [
    "%pip install \"pybamm[plot,cite]\" -q    # install PyBaMM if it is not installed\n",
    "import matplotlib.pyplot as plt\n",
    "\n",
    "import pybamm"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Handling instabilities"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Smooth approximations to non-differentiable functions"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Some functions, such as `minimum`, `maximum`, `heaviside`, and `abs`, are discontinuous and/or non-differentiable (their derivative is discontinuous). Adaptive solvers can deal with this discontinuity, but will take many more steps close to the discontinuity in order to resolve it. Therefore, using soft approximations instead can reduce the number of steps taken by the solver, and hence the integration time. See [this post](https://discourse.julialang.org/t/handling-instability-when-solving-ode-problems/9019/5) for more details.\n",
    "\n",
    "Here is an example using the `maximum` function. The function `maximum(x,1)` is continuous but non-differentiable at `x=1`, where its derivative jumps from 0 to 1. However, we can approximate it using the [`softplus` function](https://en.wikipedia.org/wiki/Rectifier_(neural_networks)#Softplus), which is smooth everywhere and is sometimes used in neural networks as a smooth approximation to the RELU activation function. The `softplus` function is given by\n",
    "$$\n",
    "s(x,y;k) = \\frac{\\log(\\exp(kx)+\\exp(ky))}{k},\n",
    "$$\n",
    "where `k` is a strictly positive smoothing (or sharpness) parameter. The larger the value of `k`, the better the approximation but the stiffer the term (exp blows up quickly!). Usually, a value of `k=10` is a good middle ground.\n",
    "\n",
    "In PyBaMM, you can either call the `softplus` function directly, or change `pybamm.settings.max_smoothing` to automatically replace all your calls to `pybamm.maximum` with `softplus`."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Exact maximum: maximum(x, y)\n",
      "Softplus (k=10):  0.1 * log(exp(10.0 * x) + exp(10.0 * y))\n",
      "Softplus (k=20): 0.05 * log(exp(20.0 * x) + exp(20.0 * y))\n",
      "Softplus (k=30): 0.03333333333333333 * log(exp(30.0 * x) + exp(30.0 * y))\n",
      "Exact maximum: maximum(x, y)\n"
     ]
    }
   ],
   "source": [
    "x = pybamm.Variable(\"x\")\n",
    "y = pybamm.Variable(\"y\")\n",
    "\n",
    "# Normal maximum\n",
    "print(f\"Exact maximum: {pybamm.maximum(x, y)}\")\n",
    "\n",
    "# Softplus\n",
    "print(\"Softplus (k=10): \", pybamm.softplus(x, y, 10))\n",
    "\n",
    "# Changing the setting to call softplus automatically\n",
    "pybamm.settings.min_max_mode = \"soft\"\n",
    "pybamm.settings.min_max_smoothing = 20\n",
    "print(f\"Softplus (k=20): {pybamm.maximum(x, y)}\")\n",
    "\n",
    "# All smoothing parameters can be changed at once\n",
    "pybamm.settings.set_smoothing_parameters(30)\n",
    "print(f\"Softplus (k=30): {pybamm.maximum(x, y)}\")\n",
    "\n",
    "# Change back\n",
    "pybamm.settings.set_smoothing_parameters(\"exact\")\n",
    "print(f\"Exact maximum: {pybamm.maximum(x, y)}\")"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Note that if both sides are constant then pybamm will use the exact value even if the setting is set to smoothing"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Exact: 1.0\n",
      "Softplus: 1.0\n"
     ]
    }
   ],
   "source": [
    "a = pybamm.InputParameter(\"a\")\n",
    "pybamm.settings.max_smoothing = 20\n",
    "# Both inputs are constant so uses exact maximum\n",
    "print(\"Exact:\", pybamm.maximum(0.999, 1).evaluate())\n",
    "# One input is not constant (InputParameter) so uses softplus\n",
    "print(\"Softplus:\", pybamm.maximum(a, 1).evaluate(inputs={\"a\": 0.999}))\n",
    "pybamm.settings.set_smoothing_parameters(\"exact\")"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Here is the plot of softplus with different values of `k`"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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",
      "text/plain": [
       "<Figure size 1000x500 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "pts = pybamm.linspace(0, 2, 100)\n",
    "\n",
    "fig, ax = plt.subplots(figsize=(10, 5))\n",
    "ax.plot(pts.evaluate(), pybamm.maximum(pts, 1).evaluate(), lw=2, label=\"exact\")\n",
    "ax.plot(\n",
    "    pts.evaluate(),\n",
    "    pybamm.softplus(pts, 1, 5).evaluate(),\n",
    "    \":\",\n",
    "    lw=2,\n",
    "    label=\"softplus (k=5)\",\n",
    ")\n",
    "ax.plot(\n",
    "    pts.evaluate(),\n",
    "    pybamm.softplus(pts, 1, 10).evaluate(),\n",
    "    \":\",\n",
    "    lw=2,\n",
    "    label=\"softplus (k=10)\",\n",
    ")\n",
    "ax.plot(\n",
    "    pts.evaluate(),\n",
    "    pybamm.softplus(pts, 1, 100).evaluate(),\n",
    "    \":\",\n",
    "    lw=2,\n",
    "    label=\"softplus (k=100)\",\n",
    ")\n",
    "ax.legend();"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Solving a model with the exact maximum and soft approximation, demonstrates a clear speed-up even for a very simple model"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Exact: 75.264 us\n",
      "Soft, k=5: 53.997 us\n",
      "Soft, k=10: 58.327 us\n",
      "Soft, k=100: 65.963 us\n"
     ]
    },
    {
     "data": {
      "application/vnd.jupyter.widget-view+json": {
       "model_id": "860e5aaee1744ba1a00f800f1429efa3",
       "version_major": 2,
       "version_minor": 0
      },
      "text/plain": [
       "interactive(children=(FloatSlider(value=0.0, description='t', max=2.0, step=0.02), Output()), _dom_classes=('w…"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "model_exact = pybamm.BaseModel()\n",
    "model_exact.rhs = {x: pybamm.maximum(x, 1)}\n",
    "model_exact.initial_conditions = {x: 0.5}\n",
    "model_exact.variables = {\"x\": x, \"max(x,1)\": pybamm.maximum(x, 1)}\n",
    "\n",
    "model_smooth = pybamm.BaseModel()\n",
    "k = pybamm.InputParameter(\"k\")\n",
    "model_smooth.rhs = {x: pybamm.softplus(x, 1, k)}\n",
    "model_smooth.initial_conditions = {x: 0.5}\n",
    "model_smooth.variables = {\"x\": x, \"max(x,1)\": pybamm.softplus(x, 1, k)}\n",
    "\n",
    "\n",
    "# Exact solution\n",
    "timer = pybamm.Timer()\n",
    "time = 0\n",
    "solver = pybamm.IDAKLUSolver()\n",
    "for _ in range(100):\n",
    "    exact_sol = solver.solve(model_exact, [0, 2])\n",
    "    # Report integration time, which is the time spent actually doing the integration\n",
    "    time += exact_sol.integration_time\n",
    "print(\"Exact:\", time / 100)\n",
    "sols = [exact_sol]\n",
    "\n",
    "ks = [5, 10, 100]\n",
    "solver = pybamm.IDAKLUSolver()\n",
    "for k in ks:\n",
    "    time = 0\n",
    "    for _ in range(100):\n",
    "        sol = solver.solve(model_smooth, [0, 2], inputs={\"k\": k})\n",
    "        time += sol.integration_time\n",
    "    print(f\"Soft, k={k}:\", time / 100)\n",
    "    sols.append(sol)\n",
    "\n",
    "pybamm.dynamic_plot(\n",
    "    sols, [\"x\", \"max(x,1)\"], labels=[\"exact\"] + [f\"soft (k={k})\" for k in ks]\n",
    ");"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "For the minimum and maximum functions, an alternative smoothing functions (smooth_max, smooth_min) are provided.\n",
    "$$\n",
    " \\textrm{min}(x, y) = 0.5 * (\\sqrt((x - y)^2 + \\sigma) + (x + y))\n",
    " \\quad , \\quad\n",
    " \\textrm{max}(x, y) = 0.5 * ((x + y) - \\sqrt((x - y)^2 + \\sigma))\n",
    "$$\n",
    "where\n",
    "$$\n",
    " \\sigma = \\frac{1}{k^2}\n",
    "$$\n",
    "For the smooth minimum and maximum functions, the recommended value of k is 100, where the function closely approximates the exact function, but is differentiable.\n",
    "\n",
    "Changing between the soft, smooth, and exact functions can be done by setting the `min_max_mode` and the value of `k` stored in `min_max_smoothing`"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Exact maximum: maximum(x, y)\n",
      "Smooth plus (k=100):  0.5 * (sqrt(0.0001 + (x - y) ** 2.0) + x + y)\n",
      "Smooth plus (k=200): 0.5 * (sqrt(2.5e-05 + (x - y) ** 2.0) + x + y)\n",
      "Softplus (k=10): 0.1 * log(exp(10.0 * x) + exp(10.0 * y))\n",
      "Exact maximum: maximum(x, y)\n"
     ]
    }
   ],
   "source": [
    "x = pybamm.Variable(\"x\")\n",
    "y = pybamm.Variable(\"y\")\n",
    "\n",
    "# Normal maximum\n",
    "print(f\"Exact maximum: {pybamm.maximum(x, y)}\")\n",
    "\n",
    "# Smooth plus can be called explicitly\n",
    "print(\"Smooth plus (k=100): \", pybamm.smooth_max(x, y, 100))\n",
    "\n",
    "# Smooth plus and smooth minus will be used when the mode is set to \"smooth\"\n",
    "pybamm.settings.min_max_mode = \"smooth\"\n",
    "pybamm.settings.min_max_smoothing = 200\n",
    "print(f\"Smooth plus (k=200): {pybamm.maximum(x, y)}\")\n",
    "\n",
    "# Setting the smoothing parameters with set_smoothing_parameters() defaults to softplus\n",
    "pybamm.settings.set_smoothing_parameters(10)\n",
    "print(f\"Softplus (k=10): {pybamm.maximum(x, y)}\")\n",
    "\n",
    "# Change back\n",
    "pybamm.settings.set_smoothing_parameters(\"exact\")\n",
    "print(f\"Exact maximum: {pybamm.maximum(x, y)}\")"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Here is the plot of smooth_max with different values of `k`"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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zzatOzo6WpQPHDgQtWvXxnfffQdv75yTxpGIiIiyhrDi9TC0fB3YBbpj351Gals+T2e88ud3KJXPDbkBW3SseMNdtWpVODs7I2/evGjdujWioqIsulJ99dVXKFCgALy8vPD5558jMTERH374oboxLlq0qMWNtDh9+jRatmxpOuewYcMQGRlpKtfpdOo8cqzceNeoUQMbN240lfv6+qqfNWvWVK0QzZs3tzj/999/j0KFCqlzv/XWW0hISEjXay1ZsiQmT56sWjHc3NxQokQJrF27FkFBQejUqZPaVq1aNRw5csR0THBwMHr27IkiRYrAxcVFXavFixebyuXYggULqmtktG/fPjg4OGDbtm1p1mXJkiXo2LHjI+t7+PBh5MuXD9988w2elFxfqZ/xkSdPHovyypUro3Dhwli1atUTPwcRERFRahK0CXhn6QC8uOgmrtueg733fyjs6YSlwxrmmiAnZwc6+34BfqhoeFz/z7LswY2ksg0fpjx2UY+k8uSOL0wqO7f2iarm5+enbuIHDRqE8+fPY+fOnejSpQv0Mmjsoe3bt+PevXvYvXs3fvzxR9XN6eWXX1Y3zAcPHsSIESMwfPhw0zgPCZLatWunyuVGffny5di6dStGjhxpOudPP/2EH374QQUsp06dUvu/8soruHz5sio/dOiQ+inHSR1XrlxpOnbHjh24evWq+jl37lzMmTNHPdJr6tSpqhXl+PHj6NChA/r27asCnz59+uDYsWMoXbq0WjdeA+liJi0e69evx5kzZ1TQJscY6yiByKxZszBx4kQVIEVERKhyeb2tWrVKsx579uxBnTp10iyX696mTRt8+eWXGDNmjNr233//qWDsUY+FCxdanEfeUxmHU758ebzxxhsqcEuuXr166txERERET0WbAPw9BLho+AI76Oo9DJh+Bw0v6PHJEqBYQmksHd4QJX1ckavos4GwsDC5+1U/k4uJidGfO3dO/bSw/Su9/jMPw+PyFsuy+1eSylYMSfmEf7ZKKk/u4B9JZSeWPNHrOXr0qHo9N27cSLW8f//++hIlSui1Wq1pW/ny5fVNmzY1rScmJupdXV31ixcvVut//PGHPk+ePPrIyEjTPuvXr9fb2Njo/f391XrhwoX1X375pcVz1a1bV//mm2+q5evXr6t6HT9+PNX6yHMade3aVd+9e/d0vV45tk+fPqZ1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",
      "text/plain": [
       "<Figure size 1000x500 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "pts = pybamm.linspace(0, 2, 100)\n",
    "\n",
    "fig, ax = plt.subplots(figsize=(10, 5))\n",
    "ax.plot(pts.evaluate(), pybamm.maximum(pts, 1).evaluate(), lw=2, label=\"exact\")\n",
    "ax.plot(\n",
    "    pts.evaluate(),\n",
    "    pybamm.smooth_max(pts, 1, 5).evaluate(),\n",
    "    \":\",\n",
    "    lw=2,\n",
    "    label=\"smooth_max (k=5)\",\n",
    ")\n",
    "ax.plot(\n",
    "    pts.evaluate(),\n",
    "    pybamm.smooth_max(pts, 1, 10).evaluate(),\n",
    "    \":\",\n",
    "    lw=2,\n",
    "    label=\"smooth_max (k=10)\",\n",
    ")\n",
    "ax.plot(\n",
    "    pts.evaluate(),\n",
    "    pybamm.smooth_max(pts, 1, 100).evaluate(),\n",
    "    \":\",\n",
    "    lw=2,\n",
    "    label=\"smooth_max (k=100)\",\n",
    ")\n",
    "ax.legend();"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Solving a model with the exact maximum and smooth approximation, demonstrates a clear speed-up even for a very simple model"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Exact: 70.677 us\n",
      "Smooth, k=10: 66.839 us\n",
      "Smooth, k=50: 63.669 us\n",
      "Smooth, k=100: 63.810 us\n",
      "Smooth, k=1000: 62.608 us\n",
      "Smooth, k=10000: 63.784 us\n"
     ]
    },
    {
     "data": {
      "application/vnd.jupyter.widget-view+json": {
       "model_id": "5f06540ea3fc44a0b07684fc7204226e",
       "version_major": 2,
       "version_minor": 0
      },
      "text/plain": [
       "interactive(children=(FloatSlider(value=0.0, description='t', max=2.0, step=0.02), Output()), _dom_classes=('w…"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "model_exact = pybamm.BaseModel()\n",
    "model_exact.rhs = {x: pybamm.maximum(x, 1)}\n",
    "model_exact.initial_conditions = {x: 0.5}\n",
    "model_exact.variables = {\"x\": x, \"max(x,1)\": pybamm.maximum(x, 1)}\n",
    "\n",
    "model_smooth = pybamm.BaseModel()\n",
    "k = pybamm.InputParameter(\"k\")\n",
    "model_smooth.rhs = {x: pybamm.smooth_max(x, 1, k)}\n",
    "model_smooth.initial_conditions = {x: 0.5}\n",
    "model_smooth.variables = {\"x\": x, \"max(x,1)\": pybamm.smooth_max(x, 1, k)}\n",
    "\n",
    "\n",
    "# Exact solution\n",
    "timer = pybamm.Timer()\n",
    "time = 0\n",
    "solver = pybamm.IDAKLUSolver()\n",
    "for _ in range(100):\n",
    "    exact_sol = solver.solve(model_exact, [0, 2])\n",
    "    # Report integration time, which is the time spent actually doing the integration\n",
    "    time += exact_sol.integration_time\n",
    "print(\"Exact:\", time / 100)\n",
    "sols = [exact_sol]\n",
    "\n",
    "ks = [10, 50, 100, 1000, 10000]\n",
    "solver = pybamm.IDAKLUSolver()\n",
    "for k in ks:\n",
    "    time = 0\n",
    "    for _ in range(100):\n",
    "        sol = solver.solve(model_smooth, [0, 2], inputs={\"k\": k})\n",
    "        time += sol.integration_time\n",
    "    print(f\"Smooth, k={k}:\", time / 100)\n",
    "    sols.append(sol)\n",
    "\n",
    "pybamm.dynamic_plot(\n",
    "    sols, [\"x\", \"max(x,1)\"], labels=[\"exact\"] + [f\"soft (k={k})\" for k in ks]\n",
    ");"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### Other smooth approximations"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Here are the other smooth approximations for the other non-smooth functions:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Soft minimum (softminus):\t -0.1 * log(exp(-10.0 * x) + exp(-10.0 * y))\n",
      "Smooth heaviside (sigmoid):\t 0.5 + 0.5 * tanh(10.0 * (y - x))\n",
      "Smooth absolute value: \t\t x * (exp(10.0 * x) - exp(-10.0 * x)) / (exp(10.0 * x) + exp(-10.0 * x))\n",
      "Smooth minimum:\t\t\t 0.5 * (x + y - sqrt(0.010000000000000002 + (x - y) ** 2.0))\n"
     ]
    }
   ],
   "source": [
    "pybamm.settings.set_smoothing_parameters(10)\n",
    "print(f\"Soft minimum (softminus):\\t {pybamm.minimum(x, y)!s}\")\n",
    "print(f\"Smooth heaviside (sigmoid):\\t {x < y!s}\")\n",
    "print(f\"Smooth absolute value: \\t\\t {abs(x)!s}\")\n",
    "pybamm.settings.min_max_mode = \"smooth\"\n",
    "print(f\"Smooth minimum:\\t\\t\\t {pybamm.minimum(x, y)!s}\")\n",
    "pybamm.settings.set_smoothing_parameters(\"exact\")"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## References\n",
    "\n",
    "The relevant papers for this notebook are:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[1] Joel A. E. Andersson, Joris Gillis, Greg Horn, James B. Rawlings, and Moritz Diehl. CasADi – A software framework for nonlinear optimization and optimal control. Mathematical Programming Computation, 11(1):1–36, 2019. doi:10.1007/s12532-018-0139-4.\n",
      "[2] Charles R. Harris, K. Jarrod Millman, Stéfan J. van der Walt, Ralf Gommers, Pauli Virtanen, David Cournapeau, Eric Wieser, Julian Taylor, Sebastian Berg, Nathaniel J. Smith, and others. Array programming with NumPy. Nature, 585(7825):357–362, 2020. doi:10.1038/s41586-020-2649-2.\n",
      "[3] Alan C. Hindmarsh. The PVODE and IDA algorithms. Technical Report, Lawrence Livermore National Lab., CA (US), 2000. doi:10.2172/802599.\n",
      "[4] Alan C. Hindmarsh, Peter N. Brown, Keith E. Grant, Steven L. Lee, Radu Serban, Dan E. Shumaker, and Carol S. Woodward. SUNDIALS: Suite of nonlinear and differential/algebraic equation solvers. ACM Transactions on Mathematical Software (TOMS), 31(3):363–396, 2005. doi:10.1145/1089014.1089020.\n",
      "[5] Valentin Sulzer, Scott G. Marquis, Robert Timms, Martin Robinson, and S. Jon Chapman. Python Battery Mathematical Modelling (PyBaMM). Journal of Open Research Software, 9(1):14, 2021. doi:10.5334/jors.309.\n",
      "\n"
     ]
    }
   ],
   "source": [
    "pybamm.print_citations()"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3 (ipykernel)",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.11.7"
  },
  "toc": {
   "base_numbering": 1,
   "nav_menu": {},
   "number_sections": true,
   "sideBar": true,
   "skip_h1_title": false,
   "title_cell": "Table of Contents",
   "title_sidebar": "Contents",
   "toc_cell": false,
   "toc_position": {},
   "toc_section_display": true,
   "toc_window_display": true
  },
  "vscode": {
   "interpreter": {
    "hash": "bca2b99bfac80e18288b793d52fa0653ab9b5fe5d22e7b211c44eb982a41c00c"
   }
  }
 },
 "nbformat": 4,
 "nbformat_minor": 4
}
